﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using FrbaBus.Properties;

namespace FrbaBus.CanjedePtos
{
    public partial class FormCanjePtos : Form
    {
        private long DNI;
        private long puntosTotales;

        public FormCanjePtos(string DNI)
        {
            InitializeComponent();
            this.DNI = Convert.ToInt64(DNI);
            grillaCanjes.Visible = false;

            obtenerPuntosCliente();
            
            tbPuntos.Enabled = false;
            btnHacerCanje.Visible = false;

            grillaCanjes.Columns.Add("prem_codigo", "CODIGO");
            grillaCanjes.Columns.Add("prem_nombre", "PRODUCTO");
            grillaCanjes.Columns.Add("prem_precio", "PUNTOS NECESARIOS");
            grillaCanjes.Columns.Add("prem_stock", "STOCK");

         }

        private void obtenerPuntosCliente()
        {
            string sConnectionString = Settings.Default.GD1C2013ConnectionString;
            SqlConnection connection = new SqlConnection(sConnectionString);
            SqlCommand cmd = new SqlCommand("THE_BEST_IAS.pr_consultar_puntos", connection);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add(new SqlParameter("@p_usu_codigo", SqlDbType.BigInt)).Value = DNI;
            cmd.Parameters.Add(new SqlParameter("@p_fecha_actual", SqlDbType.DateTime)).Value = Fechas.fechaSistema;
           
          //  cmd.Parameters.Add("@returnValue", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
            cmd.CommandTimeout = 1000;

            connection.Open();
            SqlDataReader dr2 = cmd.ExecuteReader();

            //int valorRetorno = Convert.ToInt32(cmd.Parameters["@returnValue"].Value);

            //connection.Close();

            //if (valorRetorno == 0)
            //{
            //}


            if (dr2.HasRows)
            {
                if (dr2.Read()) {
                    tbPuntos.Text = dr2["puntos_totales"].ToString();
                    this.puntosTotales = Convert.ToInt64(tbPuntos.Text.ToString());
                }
            }
            connection.Close();
         }

        private void btnVerPremios_Click(object sender, EventArgs e)
        {
            grillaCanjes.Visible = true;
            btnHacerCanje.Visible = true;
            Cargar_Grilla();

        }

        private void Cargar_Grilla()
        {

            grillaCanjes.Rows.Clear();

            string query;

            query = " SELECT prem_codigo, prem_nombre, prem_precio, prem_stock";
            query += " FROM THE_BEST_IAS.premios PR ";
            query += " WHERE PR.prem_stock > 0";
            query += " ORDER BY 1";

            SqlDataReader dr = DbHelper.ExecuteQuery(query);

            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    grillaCanjes.Rows.Add(new object[] { 
                           dr["prem_codigo"].ToString().Trim(), 
                           dr["prem_nombre"].ToString().Trim(), 
                           dr["prem_precio"].ToString().Trim(), 
                           dr["prem_stock"].ToString().Trim(), 
                         });
                }
                this.grillaCanjes.Columns["prem_codigo"].Visible = false;
            }
        }

        private void btnHacerCanje_Click(object sender, EventArgs e)
        {

            if (grillaCanjes.SelectedRows.Count > 0)
            {

                long premio = Convert.ToInt64(grillaCanjes.SelectedRows[0].Cells[0].Value.ToString());

                this.Hide();

                FormCanjeCantidad form = new FormCanjeCantidad(DNI, premio, this.puntosTotales);
                form.ShowDialog(this);
            }
            else {
                MessageBox.Show("Por favor, seleccione un item del listado de premios antes de continuar", "ERROR");
            }
        }




    }
}
